#include <iostream>
#include <utility> // for std::move
namespace cplusplus_Move {
struct A {
	void foo() {}
};

void f1() {
	A a;
	A b = std::move(a); // note: 'a' became 'moved-from' here
	a.foo();            // warn: method call on a 'moved-from' object 'a'
}

void f2() {
	A a;
	A b = std::move(a);
	A c(std::move(a)); // warn: move of an already moved-from object
}

void f3() {
	A a;
	A b = std::move(a);
	b = a; // warn: copy of moved-from object
}
}